package org.stvd.service.common;

import java.util.Map;

import org.stvd.common.utils.ServiceResult;
import org.stvd.entities.common.MsgSendHis;
import org.stvd.service.base.BaseService;

/**
 * 短信发送Service接口类
 * @author houzx
 */
public interface MsgSendHisService extends BaseService<MsgSendHis> {
    
    /**
     * 获取短信发送次数
     * @param dateStr 发送日期，格式如：yyyy-MM-dd
     * @param receiverNum 接收短信的号码
     * @param useFor 短信用途描述
     * @return
     */
    int countSendTimesTheDay(String dateStr, String receiverNum, String useFor) ;
    
    /**
     * 发送短信通知
     * @param signName 短信签名
     * @param moblieNumStr 手机号码
     * @param templateCode 短信模板编号
     * @param templateParamMap 短信模板参数集合
     * @param msgUseFor 短信发送用途
     * @param msgSendPerson 短信发送用途
     * @param msgContent 短信发送完整内容
     * @return
     */
    ServiceResult<Map<String, Object>> sendMobileMsg(String signName, String moblieNumStr,
        String templateCode, Map<String, String> templateParamMap, String msgUseFor, String msgSendPerson, String msgContent);
    
    /**
     * 手机号注册发送验证码
     * @param moblieNumStr 手机号码
     * @param guid GUID
     * @return
     */
    ServiceResult<Map<String, Object>> sendAndRegisterMobileCode(String moblieNumStr, String guid);

    /**
     * 手机号绑定发送验证码
     * @param moblieNumStr 手机号码
     * @param guid GUID
     * @return
     */
    ServiceResult<Map<String, Object>> sendAndBindingMobileCode(String moblieNumStr, String guid);

    /**
     * 重置密码发送验证码
     * @param moblieNumStr 手机号码
     * @param guid GUID
     * @return
     */
    ServiceResult<Map<String, Object>> sendAndResetPasswordMobileCode(String moblieNumStr, String guid);
    

    /**
     * 用户授权发送验证码
     * @param moblieNumStr 手机号码
     * @param guid GUID
     * @return
     */
    ServiceResult<Map<String, Object>> sendAndAuthorizationMobileCode(String moblieNumStr, String guid);
    
}
